iT邦幫忙

第 12 屆 iThome 鐵人賽

DAY 25
1
自我挑戰組

學習30天的c++系列 第 25

DAY25 學習30天的c++

  • 分享至 

  • xImage
  •  

cout成員函數
成員函數(member function):是屬於類別的觀念。
除了前面提到的setw()、setprecision()、setiosflags()等函數設定輸出格式化外,還可以利用cout成員函數更改cout的預設輸出格式。這些可更改cout預設輸出格式的成員函數如.width()、.precision()、.setf()、.unsetf()函數包含於cout函數中,所以使用前須插入iostream.h標題檔即可。
cout.width()

  • width:成員函數可更改cout的輸出欄位寬度,相當於setw()函數功能。
cout.width(6);             //相當於cout << setw(6)

cout.precision()

  • precision:成員函數可更改cout有效函數,相當於setprecision()函數功能。
cout.precision(2);                //cout<<setprecision(3);

cout.setf()

  • setf:成員函數可更改cout輸出格式,相當於setiosflags()函數功能。
cout.setf(ios::fixed);             //相當於cout<<
                                   //setiosflags(ios::fixed);

cout.unsetf()

  • unsetf成員函數是關閉指定的格式。
cout.unsetf(ios::fixed);                   //關閉固定小數位格式
cout.unsetf(ios::left);                    //關閉向左對齊格式

cout成員函數:

#include <iostream>
using namespace std;
const double PI = 3.141592653;
 
int main(int argc, char** argv)
{
    cout.precision(2);
    cout.setf(ios::fixed);
    cout.width(12);
	cout << PI * -1 << endl; 
	cout.width(12);
	cout << PI * 100 << endl; 
	cout.width(12);
	cout << PI * 10000 << endl; 
	system("PAUSE");
	return 0;
}

輸出結果:
https://ithelp.ithome.com.tw/upload/images/20201008/20130658OnzEQtpJCv.png

輸入格式化:輸入格式化包括設定輸入長度、讀取單一字元包含空白資料、以及忽略緩衝器的資料等。
設定輸入長度:

  • setw:是指定輸入長度函數,當將設定下一次輸入的字元長度。
  • setw函數包含iomanip標題檔中,使用前須先使用iomanip檔。
    範例string陣列長度為5,所以setw(5)設定輸入字串為5:
char string[5]                //宣告字串變數string
cin >> setw(5) >> string;        //設定輸入字數並取得輸入

cin,setw()練習:

#include <iostream>
#include <iomanip>
using namespace std;

int main(int argc, char** argv)
{
	char string[5];
	cout << "輸入字串:";
	cin >> setw(5) >> string;
	cout << "輸入字串是:" << string << endl;
	system("PAUSE");
	return 0; 
}

輸出結果:
https://ithelp.ithome.com.tw/upload/images/20201009/20130658fKt9zGsyPS.png


上一篇
DAY24學習30天的c++
下一篇
DAY26 學習30天的c++
系列文
學習30天的c++30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言